/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 苏李涛
 * Date: 2024-05-28
 * Time: 20:41
 */

import java.util.Locale;

/**
 * 验证回文串
 */
public class str2 {
    //判断字母，或者是数字，以便后面排除空格
    public static boolean NumberAndCharacter(char ch) {
        //判断是字母，或者是数字
        if (Character.isDigit(ch) || Character.isLetter(ch)) {
            return true;
        }
        return false;
    }

    public static boolean isPalindrome(String s) {
        s = s.toLowerCase();
        int left = 0;
        int right = s.length() - 1;
        while (left < right) {
            //往后遍历，再用封装的方法判断，是否为空格，是就排除
            while (left < right && !NumberAndCharacter(s.charAt(left))) {
                left++;
            }
            while (left < right && !NumberAndCharacter(s.charAt(right))) {
                right--;
            }
            //走到这里，就不存在空格了,再判断，正着读和反着读都一样。则可以认为该字符串是一个 回文串
            if ((s.charAt(left)) == s.charAt(right)) {
                left++;
                right--;
            } else {
                return false;
            }
        }
        //排除空格，并且正着读和反着读都一样，全部遍历完，则可以认为该字符串是一个 回文串
        return true;
    }
}
